/**
 * @Auther: Min.Liu
 * @Description:
 * 垃圾回收算法 ：
 *     引用计数算法：根据对象被其他对象引用的次数  为零当作垃圾回收  无法解决循环引用问题 java没用
 *     可达性分析算法：被gcRoot直接或者间接引用的对象 不会被回收  反之 会被当作垃圾回收
 * gcRoot： java的基础类对象 线程当前栈帧中的局部变量引用对象 锁对象(synchronized)
 * 垃圾回收：
 *     标记清楚：先标记 再清楚  缺点：会产生内存碎片
 *     标记整理：先标记 在整理  速度慢  不会产生内存碎片  内存不多
 *     标记复制：先标记 再清除将from中遗留对象 从from 复制到to(连接在一起) to和from交互位置  内存剩余较多
 *     主要使用标记整理和标记复制
 *分代回收：
 *     新生代：（存放用完就丢弃的对象） 伊甸园  新生代from 新生代to
 *     老年代：（存放长时间使用的对象）
 *对象创建到回收过程：
 *    1.刚开始新创建的对象会放入到伊甸园中。随着对象的不断创建，导致伊甸园内存不足，进而触发minorGc 使用可达性分析  伊甸园中的对象 哪些需要被回收  进行标记
 *    2.将伊甸园中存活的对象 复制到to中 对象的生命周期加1 from和to交换位置 此时伊甸园内存清空
 *    3.新创建的对象继续放入到伊甸园中。随着对象的不断创建，再次导致伊甸园内存不足，进而出发minorGc 使用可达性分析  伊甸园中的对象和from中的对象 哪些需要被回收  进行标记
 *    4.将伊甸园中和from中存活的对象 复制到to中 对象的生命周期加1(原from中存活对象生命周期变为2) from和to交换位置 此时伊甸园内存清空
 *    5.后面当触发minorGc时在from区中存在生命周期达到15时且继续存活的对象 该对象被放入到老年代中
 *    6.再后面当新生代和老年代空间都不足时  先尝试触发fullGC(先进行minorGc内存任然不足 触发fullgc) 对新生代和老年代都做一次彻底清理。
 *    7.fullGC后任然不足 触发oom
 *    8.在上面3触发minorGc后 伊甸园的内存空间任然不够存放新对象 会将 伊甸园原有存活对象放入老年代中
 *    9.针对大对象 如果伊甸园存放不下 大对象直接晋升老年代
 *minGc和 fullGc
 *  都会触发stop thw world(其他线程等待垃圾回收，回收完毕才继续运行) 唤做STW
 *  fullGc的STW时间更长
 * @Date: Created in 11:19 2025/4/16
 */
package day03.gc;

